Some computing systems employ Virtual Memory (VM) techniques, which use a fast but small volatile memory and a large but slower non-volatile memory. For example, in some mobile computing and communication devices, the device Operating System (OS) comprises a VM module that jointly operates the device Random Access Memory (RAM) with a Solid State Drive (SSD).
Various methods for using VM are known in the art. For example, U.S. Pat. No. 8,429,377, whose disclosure is incorporated herein by reference, describes a system and a method for accessing a memory. The system comprises a processor device that issues a request for a memory page at a virtual address, and a lookup buffer for storing one or more page table entries, wherein each of the page table entries comprises at least a virtual page number and a physical page number. The system further comprises a logic circuit that receives a virtual address from said processor, and matches the virtual address to the virtual page number in one of the page table entries so as to select the physical page number in the same page table entry. The page table entry comprises one or more bits set to exclude a memory range from a page.
In “Key-Study to Execute Code Using Demand Paging and NAND Flash at Smart Card Scale,” Smart Card Research and Advanced Application, Proceedings of the 9th IFIP WG 8.8/11.2 International Conference, CARDIS 2010, Passau, Germany, April 2010, pages 102-117, which is incorporated herein by reference, Geoffroy et al. discuss limitations involved in embedding multiple applications in systems as small as smart cards or sensors. Physical limitations of these systems, such as a very small main memory, and their cost of production, make this very difficult to achieve. One solution proposed in the study is to execute code from a cheaper, denser, but slower secondary memory, such as NAND Flash.